package br.com.velp.sudecap.entidade;

import br.com.velp.sudecap.hibernate.intercept.Auditable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

/**
 * <sumario>
 * <objetivo> "Rastreabilidade" </objetivo>
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 16.12.2013 </data_criacao>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <descricao> Bean Responsável Pelo Mapeamento da Tabela CONSULENTE </descricao>
 * </sumario>
 */
@Entity
@Table(name = "TB_CONSULENTE")
@Auditable(logTableName = "TB_CONSULENTE_LOG")
public class Consulente extends EntityBase {
    
    public static final Long serialVersionUID = 1L;
    
    @Id
    @SequenceGenerator(name = "SQ_ID_CONSULENTE", sequenceName = "SQ_ID_CONSULENTE", allocationSize = 1)
    @GeneratedValue(generator = "SQ_ID_CONSULENTE")
    @Column(name = "ID_CONSULENTE", nullable = false, unique = true)                                    
    private Long id;
    
    @Column(name = "USUARIO_CADASTRO", nullable = false)                                    
    private Long idUsuarioCadastro;
    
    @Column(name = "USUARIO_ALTERACAO")                                    
    private Long idUsuarioAlteracao;
    
    @Column(name = "NOME", length = 150)                                    
    private String nome;
    
    @Column(name = "TIPO_LOGRADOURO", length = 50)                                    
    private String tipoLogradouro;
    
    @Column(name = "LOGRADOURO", length = 150)                                    
    private String logradouro;
    
    @Column(name = "UF", length = 2)                                    
    private String uf;
    
    @Column(name = "CIDADE", length = 150)                                    
    private String cidade;
    
    @Column(name = "NUMERO", length = 10)                                    
    private String numero;
    
    @Column(name = "STATUS", length = 1)                                    
    private String status;
    
    @Column(name = "MATRICULA", length = 10)                                    
    private String matricula;
    
    @Column(name = "EMAIL", length = 150)                                    
    private String email;
    
    @Column(name = "TELEFONE1", length = 13)                                    
    private String telefone01;
    
    @Column(name = "TELEFONE2", length = 13)                                    
    private String telefone02;
    
    @Column(name = "DATA_CADASTRO", nullable = false)                                    
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date dataCadastro;
    
    @Column(name = "DATA_ALTERACAO")                                    
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date dataAlteracao;
    
    @Fetch(FetchMode.SELECT)
    @ManyToOne()
    @JoinColumn(name = "ID_ORGAO")
    private Orgao orgao;

    public Consulente() {
    }

    public Consulente(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getIdUsuarioCadastro() {
        return idUsuarioCadastro;
    }

    public void setIdUsuarioCadastro(Long idUsuarioCadastro) {
        this.idUsuarioCadastro = idUsuarioCadastro;
    }

    public Long getIdUsuarioAlteracao() {
        return idUsuarioAlteracao;
    }

    public void setIdUsuarioAlteracao(Long idUsuarioAlteracao) {
        this.idUsuarioAlteracao = idUsuarioAlteracao;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getTipoLogradouro() {
        return tipoLogradouro;
    }

    public void setTipoLogradouro(String tipoLogradouro) {
        this.tipoLogradouro = tipoLogradouro;
    }

    public String getLogradouro() {
        return logradouro;
    }

    public void setLogradouro(String logradouro) {
        this.logradouro = logradouro;
    }

    public String getUf() {
        return uf;
    }

    public void setUf(String uf) {
        this.uf = uf;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getTelefone01() {
        return telefone01;
    }

    public void setTelefone01(String telefone01) {
        this.telefone01 = telefone01;
    }

    public String getTelefone02() {
        return telefone02;
    }

    public void setTelefone02(String telefone02) {
        this.telefone02 = telefone02;
    }

    public Date getDataCadastro() {
        return dataCadastro;
    }

    public void setDataCadastro(Date dataCadastro) {
        this.dataCadastro = dataCadastro;
    }

    public Date getDataAlteracao() {
        return dataAlteracao;
    }

    public void setDataAlteracao(Date dataAlteracao) {
        this.dataAlteracao = dataAlteracao;
    }

    public Orgao getOrgao() {
        return orgao;
    }

    public void setOrgao(Orgao orgao) {
        this.orgao = orgao;
    }

}
